package com.huo.util;

import java.util.ArrayList;
import java.util.List;

import com.huo.filestransport.vo.FtpFileInfo;

public class ListUtil {
	
	/**
	 * 将一组数据平均分成n组
	 *
	 * @param source 要分组的数据源
	 * @param n      平均分成n组
	 * @param <T>
	 * @return
	 */
	public static <T> List<List<T>> averageAssign(List<T> source, int n) {
	    List<List<T>> result = new ArrayList<List<T>>();
	    int remainder = source.size() % n;  //(先计算出余数)
	    int number = source.size() / n;  //然后是商
	    int offset = 0;//偏移量
	    for (int i = 0; i < n; i++) {
	        List<T> value = null;
	        if (remainder > 0) {
	            value = source.subList(i * number + offset, (i + 1) * number + offset + 1);
	            remainder--;
	            offset++;
	        } else {
	            value = source.subList(i * number + offset, (i + 1) * number + offset);
	        }
	        result.add(value);
	    }
	    return result;
	}
	
	public static void main(String[] args) {
		List<FtpFileInfo> lists = new ArrayList<>();
		
		for(int i = 0 ; i< 3 ; i ++) {
			FtpFileInfo ffi = new FtpFileInfo();
			lists.add(ffi);
		}
		List<List<FtpFileInfo>> list = averageAssign(lists,4);
		System.out.println(list.toString());
	}
	

}
